//////#include<algorithm>
//////#include<iostream>
//////#include<queue>
//////const int N = 1e6 + 10;
//////int a[N];
//////using namespace std;
//////int main()
//////{
//////	int T;cin >> T;queue<int> mp;
//////	while (T--)
//////	{
//////		int N,count = 0,count2 = 0;cin >> N;
//////		for (int i = 1; i <= N;i++)
//////		{
//////			cin >> a[i];
//////		}
//////		sort(a + 1, a + 1 + N);
//////		for (int i = N; i >= 1; i--)
//////		{
//////			mp.push(a[i]);int v = mp.front();count2++;
//////			while (count2 % v == 0 && !mp.empty())
//////			{
//////				mp.pop();
//////			}
//////			if (count2 % v == 0)
//////			{
//////				count++;
//////				count2 = 0;
//////			}
//////		}
//////		cout << count << endl;
//////	}
//////	return 0;
//////}
////#include<algorithm>
////#include<iostream>
////const int N = 1e6 + 10;
////int  a[N];
////using namespace std;
////int main()
////{
////	int T;cin >> T;
////	while (T--)
////	{
////		int N;cin >> N;
////		for (int i = 1; i <= N;i++)
////		{
////			cin >> a[i];
////		}
////		sort(a + 1, a + 1 + N);
////		int left = N, right = N;int count = 0,ret = 0;
////		while (right >= 1)
////		{
////			while (a[right]--)
////			{
////				left--;
////			}
////			count++;
////			right = left;
////		}
////		cout << count << endl;
////	}
////	return 0;
////}
//#include<iostream>
//#include<algorithm>
//#include<unordered_map>
//using namespace std;
//const int N = 1e6 + 10;
//int a[N];
//bool comp(int x, int y)
//{
//	return x > y;
//}
//int main()
//{
//	int T;cin >> T;
//	while (T--)
//	{
//		int N,count = 0;cin >> N;
//		for (int i = 1; i <= N;i++)
//		{
//			cin >> a[i];
//		}
//		sort(a + 1, a + 1 + N, comp);int cur = 1,ret = 1;
//		for (int i = 1; i <= N;i++)
//		{
//			while (cur <= N)
//			{
//				ret = cur;
//				while (a[cur]--)
//				{
//					ret--;
//				}
//				cur = ret;
//				count++;
//			}
//		}
//		cout << count << endl;
//	}
//	return 0;
//}

//#include<iostream>
//#include<algorithm>
//const int N = 1e6 + 10;
//int a[N];
//using namespace std;
//bool comp(int x, int y)
//{
//	return x > y;
//}
//int main()
//{
//	int T;cin >> T;
//	while (T--)
//	{
//		int N;cin >> N;
//		for (int i = 1; i <= N; i++)
//		{
//			cin >> a[i];
//		}
//		int count = 0;
//		sort(a + 1, a + 1 + N, comp);
//		int left = 1, right = 1;
//		while (right <= N)
//		{
//			while (a[left]--)
//			{
//				right++;
//			}
//			count++;
//			left = right - 1;
//		}
//		cout << count << endl;
//	}
//	return 0;
//}
//#include<iostream>
//#include<algorithm>
//const int N = 1e6 + 10;
//int a[N];
//using namespace std;
//int main()
//{
//	int T;cin >> T;
//	while (T--)
//	{
//		int N;cin >> N;
//		for (int i = 1; i <= N; i++)
//		{
//			cin >> a[i];
//		}
//		sort(a + 1, a + 1 + N);
//		int cur = 1, count = 0;
//		for (int i = 1; i <= N; i++)
//		{
//			if (a[i + 1] > a[i])
//			{
//				cur++;
//				count = 0;
//			}
//			cur++;
//		}
//	}
//	return 0;
//}
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int T;
    cin >> T;
    while (T--) {
        int N;
        cin >> N;
        vector<int> e(N);
        for (int i = 0; i < N; ++i) {
            cin >> e[i];
        }
        sort(e.begin(), e.end());

        int current = 0, count = 0;
        for (int i = 0; i < N; ++i) {
            current++;
            if (current >= e[i]) {
                count++;
                current = 0;
            }
        }
        cout << count << '\n';
    }

    return 0;
}